package laboratorioV.grupo21.tp4.deposito;

import java.io.Serializable;
import java.util.LinkedHashMap;

public class XYlinkedHashMap<E> implements Serializable{	
	/**
	 * 
	 */
	private static final long serialVersionUID = -4766809220908212263L;
	private LinkedHashMap<Integer, LinkedHashMap<Integer, E>> ubicaciones;	//LinkedHashMap<COORDENADA X, LinkedHashMap<COORDENADA Y, ELEMENTO>>
	
	public XYlinkedHashMap() {	
		ubicaciones=new LinkedHashMap<Integer, LinkedHashMap<Integer,E>>();
	}
	public void addElement(Integer pX, Integer pY, E pValor) throws Exception{
		try {
			LinkedHashMap<Integer, E> columna = new LinkedHashMap<Integer, E>();
			if(ubicaciones.containsKey(pX)==true){
				columna=  ubicaciones.get(pX);
				columna.put(pY, pValor);
				ubicaciones.remove(pX);
				ubicaciones.put(pX, columna);
			}
			else{
				columna.put(pY, pValor);
				ubicaciones.put(pX, columna);			
			}					
		} catch (Exception e) {
			throw e;
		}
	}
	public void DeleteElement(Integer pX, Integer pY)
	{
		LinkedHashMap<Integer,E> LHashMapAux = new LinkedHashMap<Integer, E>();
		LHashMapAux = ubicaciones.get(pX);
		LHashMapAux.remove(pY);
		ubicaciones.put(pX, LHashMapAux);
	}
	public E getElement(Integer pX, Integer pY){
		if(ubicaciones.containsKey(pX)){
			LinkedHashMap<Integer,E> LHashMapAux = new LinkedHashMap<Integer, E>();
			LHashMapAux = ubicaciones.get(pX);
			if(LHashMapAux.containsKey(pY))
				return LHashMapAux.get(pY);
		}
		return null;
		
	}
	

}
